﻿/*MyPhotoIndex Free Photo Organizer <www.myphotoindex.com>
  Copyright (C) <2006-2010>  <Asaf Yarkoni asaf@yarkoni.net>

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.*/
using System;
using System.Collections.Generic;
using System.Text;
using MyPhotoIndex.Interfaces.Plugins;
using System.Collections.ObjectModel;
using MyPhotoIndex.Interfaces;
using MyPhotoIndex.Controls;
using MyPhotoIndex.Plugins.Magnifier.Properties;

namespace MyPhotoIndex.Plugins.Magnifier
{
    public class Magnifier : IUtilityPlugin
    {
        private IApplicationContext m_applicationContext;
        static MagnifierForm ms_magnifierForm = null;

        #region IUtilityPlugin Members

        public void ImageSelectionChanged(ReadOnlyCollection<int> selectedImages, SelectedImageInfo lastSelected)
        {
            if (ms_magnifierForm != null &&
                ms_magnifierForm.Visible == true)
            {
                ms_magnifierForm.SelectionChanged(selectedImages, lastSelected);
            }
        }

        public void RegisterMenues(List<IPluginMenuInfo> pluginMenuInfoList)
        {
            PluginMenuInfo menuInfo = new PluginMenuInfo();
            menuInfo.MenuItemId = Guid.NewGuid();
            menuInfo.Name = Resources.Menu1;
            menuInfo.Icon = Resources.zoom_in;
            menuInfo.MenuItemClick += new EventHandler<PluginMenuClickEventArgs>(menuInfo_MenuItemClick);
            menuInfo.MenuItemQueryState += new EventHandler<PluginMenuStateQueryEventArgs>(menuInfo_MenuItemQueryState);

            pluginMenuInfoList.Add(menuInfo);
        }

        void menuInfo_MenuItemQueryState(object sender, PluginMenuStateQueryEventArgs e)
        {
            e.Enabled = ms_magnifierForm == null || (ms_magnifierForm.Visible == false);
        }

        void menuInfo_MenuItemClick(object sender, PluginMenuClickEventArgs e)
        {
            if (ms_magnifierForm == null)
             {
                 ms_magnifierForm = new MagnifierForm(m_applicationContext);
             }

            ms_magnifierForm.Show(ApplicationAlert.DefaultOwner);
            ms_magnifierForm.SelectionChanged(e.SelectedImages, SelectedImageInfo.Empty);
        }

        #endregion

        #region IPlugin Members

        public string Description
        {
            get { return "Magnifier"; }
        }

        public bool Load(IApplicationContext applicationContext)
        {
            m_applicationContext = applicationContext;

            return true;
        }

        public string Name
        {
            get { return "Magnifier"; }
        }

        public void Unload()
        {
            if (ms_magnifierForm != null)
            {
                ms_magnifierForm.CloseForm();
            }
        }

        #endregion
    }
}
